The continuous information technology (IT) development has to satisfy fast growing business demands. In recent years we are witnessing evolving solutions aimed to provide comprehensive online functionality, high availability, and simultaneous multi-application execution for multiuser environments. The growing complexity of the software products means growing complexity of the procedures for upgrade of the products to new releases. Further, there is the increasing demands for high availability and continuous application execution. It is no longer satisfactory directly to install a new version of a software system over the old version as it would lead to huge downtime. Therefore, an approach for upgrading software system with a shadow system was introduced (See US Patent Application publication No. US 2003-0130985 A1). This approach is also referred as a switch upgrade.
The switch upgrade approach involves a complete installation of a new release of a software system (module, application) from scratch while the software system to be upgraded is still running in production mode. This new release is often called a shadow system. Thus, the most time consuming activities of an upgrade procedure (e.g. installation and deployment) are accomplished without interrupting the productive mode. When the installation and the deployment of the shadow application are done, the switch upgrade downtime starts. At that moment the productive system and the shadow system are stopped and switched by adapting, synchronizing and migrating the relevant system and customer data. The switch upgrade requires minimum downtime to upgrade the productive system to the new release.
In many current scenarios the productive software application to be upgraded is executed in a distributed system environment. There are many definitions for a distributed system. In this document a distributed system should be understood as a plurality of software modules running in parallel on separate hosts.
In a distributed system environment the upgrade of a software module running on one host often, if not always, requires communication with another software module running on a separate host, or even modification of the latter. In such an environment the switch upgrade approach has to be modified in order to effectively comply with the minimum downtime requirement.